package Controller;

import Model.Construction.*;
import Model.*;

import java.lang.reflect.Constructor;

/**
 * La classe InfrastructureFactory est une implementation du pattern factory
 * elle produit sur demande une des sous classe d'infrastructure a partir d'une string
 */
public class InfrastructureFactory{
	private final Ville ville;


	public InfrastructureFactory(Ville v) {
		ville = v;
	}

	/**
	 *
	 * @param s String qui contient le nom de la classe dont il faut creer une instance
	 */
	public Infrastructure construire (String s) {
		Infrastructure inf=null;
		try {
			Class c = Class.forName(s);
			Constructor ctor = c.getConstructor(Model.Ville.class);
			inf = (Infrastructure) ctor.newInstance(ville);
		} catch (Exception e) {
			System.out.println("Factory : " +e);
			e.printStackTrace();
		}

		return inf;
	}
}
